//非立即执行版本
function debounce(fn, delay) {
    let timeout; // 创建一个标记用来存放定时器的返回值
    return function () {
        clearTimeout(timeout); // 每当事件触发的时候把前一个 setTimeout clear 掉
        timeout = setTimeout(() => { // 然后又创建一个新的 setTimeout, 这样就能保证输入字符后的 interval 间隔内如果还有字符输入的话，就不会执行 fn 函数
            fn.apply(this, arguments);
        }, delay);
    };
}

window.onscroll = debounce(showTop,1000)


//立即执行版本
function debounce(fnc, delay) {
    let timeout;
    return function () {
        clearTimeout(timeout);	//每次触发清除上次计时器

        if (!timeout) fnc.apply(this, arguments)		//如果 timeout 没有重置为 null 则执行函数

        timeout = setTimeout(() => {	//计时结束后 timeout 置为 null
            timeout = null;
        }, delay)

    }
}
window.onscroll = debounce(showTop, 1000)




